// 测试订单地址API接口
const axios = require('axios');

// 基础API URL
const BASE_URL = 'http://localhost:3000/api';

// 测试用的订单ID
const TEST_ORDER_ID = 54; // 确保这个订单ID在数据库中存在

// 测试数据
const testAddressData = {
  orderId: TEST_ORDER_ID,
  consigneeName: '张三',
  phoneNumber: '13800138000',
  detailAddress: '测试小区1号楼2单元301室',
  deliveryTime: '2025-09-17 09:00-12:00',
  remarks: '请按门铃'
};

// 更新测试数据
const updateAddressData = {
  orderId: TEST_ORDER_ID,
  consigneeName: '李四',
  phoneNumber: '13900139000',
  detailAddress: '测试小区2号楼3单元402室',
  deliveryTime: '2025-09-18 13:00-17:00',
  remarks: '请提前联系'
};

// 设置axios默认配置
const apiClient = axios.create({
  baseURL: BASE_URL,
  headers: {
    'Content-Type': 'application/json'
    // 暂时不使用Token认证
  }
});

// 测试保存订单地址
const testSaveOrderAddress = async () => {
  try {
    console.log('\n=== 测试保存订单地址 ===');
    console.log('保存的地址数据:', testAddressData);
    
    const response = await apiClient.post('/order_address', testAddressData);
    
    console.log('保存结果:', response.data);
    
    if (response.data.success) {
      console.log('✓ 保存订单地址测试通过!');
      return true;
    } else {
      console.error('✗ 保存订单地址测试失败:', response.data.message);
      return false;
    }
  } catch (error) {
    console.error('✗ 保存订单地址发生异常:', error.response?.data || error.message);
    return false;
  }
};

// 测试获取订单地址
const testGetOrderAddress = async () => {
  try {
    console.log('\n=== 测试获取订单地址 ===');
    console.log('获取地址的订单ID:', TEST_ORDER_ID);
    
    const response = await apiClient.get('/order_address', {
      params: { orderId: TEST_ORDER_ID }
    });
    
    console.log('获取结果:', response.data);
    
    if (response.data.success && response.data.data) {
      console.log('✓ 获取订单地址测试通过!');
      return true;
    } else {
      console.error('✗ 获取订单地址测试失败:', response.data.message);
      return false;
    }
  } catch (error) {
    console.error('✗ 获取订单地址发生异常:', error.response?.data || error.message);
    return false;
  }
};

// 测试更新订单地址
const testUpdateOrderAddress = async () => {
  try {
    console.log('\n=== 测试更新订单地址 ===');
    console.log('更新的地址数据:', updateAddressData);
    
    const response = await apiClient.put('/order_address', updateAddressData);
    
    console.log('更新结果:', response.data);
    
    if (response.data.success) {
      console.log('✓ 更新订单地址测试通过!');
      return true;
    } else {
      console.error('✗ 更新订单地址测试失败:', response.data.message);
      return false;
    }
  } catch (error) {
    console.error('✗ 更新订单地址发生异常:', error.response?.data || error.message);
    return false;
  }
};

// 测试删除订单地址
const testDeleteOrderAddress = async () => {
  try {
    console.log('\n=== 测试删除订单地址 ===');
    console.log('删除地址的订单ID:', TEST_ORDER_ID);
    
    const response = await apiClient.delete('/order_address', {
      params: { orderId: TEST_ORDER_ID }
    });
    
    console.log('删除结果:', response.data);
    
    if (response.data.success) {
      console.log('✓ 删除订单地址测试通过!');
      return true;
    } else {
      console.error('✗ 删除订单地址测试失败:', response.data.message);
      return false;
    }
  } catch (error) {
    console.error('✗ 删除订单地址发生异常:', error.response?.data || error.message);
    return false;
  }
};

// 运行所有测试
const runAllTests = async () => {
  console.log('开始测试订单地址API接口...');
  
  // 记录测试结果
  const results = [];
  
  // 按顺序运行测试
  results.push(await testSaveOrderAddress());
  results.push(await testGetOrderAddress());
  results.push(await testUpdateOrderAddress());
  // 取消注释下面一行以测试删除功能
  // results.push(await testDeleteOrderAddress());
  
  // 统计测试结果
  const passedCount = results.filter(result => result).length;
  const totalCount = results.length;
  
  console.log('\n=== 测试总结 ===');
  console.log(`共测试 ${totalCount} 个接口，通过 ${passedCount} 个，失败 ${totalCount - passedCount} 个`);
  
  if (passedCount === totalCount) {
    console.log('✓ 所有订单地址API接口测试通过!');
  } else {
    console.log('✗ 部分订单地址API接口测试失败，请检查问题!');
  }
};

// 执行测试
runAllTests();